package com.snb.play.dwebtoon.util;

import com.snb.play.dwebtoon.R;
import com.snb.play.dwebtoon.R.id;
import com.snb.play.dwebtoon.R.layout;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.widget.RemoteViews;

public class NotificationCenter {

	public static void addNotification(Context context, int noticeId, int iconId, String ticker, String title, String message) {
		Notification noti = new Notification(iconId, ticker, System.currentTimeMillis());

//		PendingIntent pintent = PendingIntent.getActivity(context, 0, null, 0);

		noti.setLatestEventInfo(context, title, message, null);

		// 시스템에 통지 정보를 등록
		NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		nm.notify(noticeId, noti);
	}

	/**
	 * 통지를 등록한다.
	 * 
	 * @param context
	 *            - 호출하는 Activity 자신
	 * @param intent
	 *            - 등록된 통지를 클릭했을 때, 구동될 Activity 정보
	 * @param noticeId
	 *            - 통지에 부여할 고유번호
	 * @param iconId
	 *            - 통지에 표시될 아이콘의 리소스 아이디
	 * @param ticker
	 *            - 통지가 등록될 시에 안테나 영역에 일시적으로 보여질 메시지
	 * @param title
	 *            - 통지 영역에 표시될 제목
	 * @param message
	 *            - 통지 영역에 보여질 내용
	 */
	public static void addNotification(Context context, Intent intent, int noticeId, int iconId, String ticker, String title, String message) {
		Notification noti = new Notification(iconId, ticker, System.currentTimeMillis());

		PendingIntent pintent = PendingIntent.getActivity(context, 0, intent, 0);

		noti.setLatestEventInfo(context, title, message, pintent);

		// 시스템에 통지 정보를 등록
		NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		nm.notify(noticeId, noti);
	}

	/**
	 * @param context
	 *            - 호출하는 Activity 자신
	 * @param intent
	 *            - 등록된 통지를 클릭했을 때, 구동될 Activity 정보
	 * @param noticeId
	 *            - 통지에 부여할 고유번호
	 * @param iconId
	 *            - 통지에 표시될 아이콘의 리소스 아이디
	 * @param ticker
	 *            - 통지가 등록될 시에 안테나 영역에 일시적으로 보여질 메시지
	 * @param title
	 *            - 통지 영역에 표시될 제목
	 * @param message
	 *            - 통지 영역에 보여질 내용
	 * @param bitmap
	 *            - 통지 영역에 보여질 썸네일 이미지
	 * @param max
	 *            - 프로그레스 맥스
	 * @param progress
	 *            - 통지 영역에 보여질 프로그레스 값
	 */
	public static void addNotification(Context context, Intent intent, int noticeId, int iconId, String ticker, String title, String message,
			Bitmap bitmap, int max, int progress) {
		Notification noti = new Notification();
		noti.icon = iconId;
		noti.tickerText = ticker;
		noti.when = System.currentTimeMillis();

		RemoteViews rV = new RemoteViews(context.getPackageName(), R.layout.notification_view);
		if (bitmap != null)
			rV.setImageViewBitmap(R.id.noti_thumb, bitmap);
		if (title != null)
			rV.setTextViewText(R.id.noti_title, title);
		if (message != null)
			rV.setTextViewText(R.id.noti_msg, message);
		rV.setProgressBar(R.id.noti_progress, max, progress, false);

		noti.contentView = rV;

		NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		nm.notify(noticeId, noti);
		if (bitmap != null)
			bitmap.recycle();
	}

	public void removeNotification(Context context, int noticeId) {
		NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		nm.cancel(noticeId);
	}

}
